Conventional database management systems use indexing to facilitate user access to keyed data. Keys may be unique to particular files or records (social security number, vehicle identification number (“VIN”), etc.) or non unique (dates, student grades, etc.), and may have significance solely to the intended user of the application (e.g., a VIN to a car salesman using a dealership inventory application).
In large databases, a user query may cause thousands of keyed data records to be returned, slowing access to the desired data while the user filters and scrolls through the list of returned data. Furthermore, in network-based applications, rendering large amounts of data on the client computer is impractical and the increased network traffic and server usage greatly reduces system efficiency. Applying the search/filter/results methods used in Internet search engines, in which the user executes filter queries and accesses a virtual number of results pages one page at a time, requires, for a large result set, the examination of hundreds of pages before the desired record or file is located. Existing single level indexes are of extremely limited use for subdividing large amounts of data to allow for efficient location of desired data. For example, Sun's single-level Java Help Facility, which has separate indexes for the letters “A” thru “Z”, generates 3100 entries when the letter “A” is clicked.